"""
当页面中没有某元素时，如何让其不报错：
    1.使用 try-except 捕获异常
        使用 try:...  except NoSuchElementException:...

    2.封装元素查找函数:定义一个安全的元素查找函数，返回元素或 None，避免直接抛出异常。
        还是使用 try:...  except NoSuchElementException:...

    3.使用异常捕获，抓显示等待超时的异常，TimeoutException
"""

from selenium import webdriver
from selenium.common import NoSuchElementException, TimeoutException
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions
from selenium.webdriver.support.wait import WebDriverWait

driver = webdriver.Edge()

driver.get("https://www.baidu.com")

# # 方法1
# try:
#     element = driver.find_element(By.ID, "111")
#     print("有此元素")
# except NoSuchElementException:
#     print("没有此元素")

# # 方法2
# def find_element(by, value):
#     try:
#         element = driver.find_element(by, value)
#         print("有此元素")
#         return element
#     except NoSuchElementException:
#         print("没有此元素")
#         return None
#
# ret = find_element(By.ID, "kw")
# print(ret)

# 方法三
try:
    element = WebDriverWait(driver, 15).until(
        expected_conditions.presence_of_element_located((By.ID, "kw"))
    )
    print("有此元素")
except TimeoutException:
    print("没有此元素")